1、多点电容触摸（MT）协议
	多点电容触摸（MT）协议是 input 子系统的一部分， MT 协议被分为两种类型，分别是 Type A 和 Type B ：
		Type A ：适用于触摸点不能被区分或者追踪的设备（即硬件上没有触摸 ID ），此类型的设备上报原始数据
		Type B ：适用于有硬件追踪并能区分触摸点的触摸设备，此类型设备通过 slot 更新某一个触摸点的信息
	触摸点的信息通过一系列的 ABS_MT 事件上报给 linux 内核，常用的 ABS_MT 事件有：
		ABS_MT_SLOT ：表示后面上报的是相应 slot 的触摸信息
		ABS_MT_TRACKING_ID ：上报触摸 ID 事件， slot 从松开到按下时系统自动分配 TRACKING_ID
		ABS_MT_POSITION_X ：上报绝对坐标X
		ABS_MT_POSITION_Y ：上报绝对坐标Y
	对于 Type B 类型采用 ABS_MT_SLOT 分割触摸点，并用 ABS_MT_TRACKING_ID 上报触摸点 ID，对于 Type A 类型则采
用 SYN_MT_REPORT 事件来分割触摸点。
2、多点触摸所常用 API 
	/* 初始化 slots
	 * dev ：MT 设备对应的 input_dev
	 * num_slots ：设备要使用的 SLOT 数量，也就是触摸点的数量
	 * flags :其他一些 flags 信息，如 INPUT_MT_POINTER 表示触摸板设备，INPUT_MT_DIRECT 表示触摸屏设备
	 **/
	int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots, unsigned int flags)
	/* 通过 slot 上报 ABS_MT_SLOT 事件
	 * dev ：MT 设备对应的 input_dev
	 * slot ：指定产生 ABS_MT_SLOT 事件 slot
	 **/
	void input_mt_slot(struct input_dev *dev, int slot)
	/* 上报触摸点的状态，用于产生 ABS_MT_TRACKING_ID 和 ABS_MT_TOOL_TYPE 事件
	 * dev ：MT 设备对应的 input_dev
	 * tool_type ：触摸类型， MT_TOOL_FINGER (手指)、 MT_TOOL_PEN (笔)、 MT_TOOL_PALM (手掌)
	 * active ：触摸状态， true 表示按下，如果是第一次按下系统会为其分配一个 ID ，false 表示抬起
	 **/
	bool input_mt_report_slot_state(struct input_dev *dev, unsigned int tool_type, bool active)
	/* 上报绝对坐标事件
	 * dev ：MT 设备对应的 input_dev
	 * code ：事件类型，ABS_MT_POSITION_X 或 ABS_MT_POSITION_Y 分别表示 X 轴和 Y 轴，
	 * value ： X 轴或 Y 轴坐标值
	 **/
	void input_report_abs(struct input_dev *dev,unsigned int code, int value)
	/* 单点触摸模拟
	 * dev ：MT 设备对应的 input_dev
	 * use_count ：为 true 则要上报触摸点数
	 **/
	void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count)
	/* 用于产生 SYN_MT_REPORT 事件
	 * dev ：MT 设备对应的 input_dev
	 **/
	void input_mt_sync(struct input_dev *dev)
	/* 上报触摸坐标
	 * input ：MT 设备对应的 input_dev
	 * prop ：prop触摸屏特性
	 * x,y ：触摸坐标
	 * multitouch ：是否是多点触摸，true表示多点触摸
	 **/
	void touchscreen_report_pos(struct input_dev *input, const struct touchscreen_properties *prop, 
								unsigned int x, unsigned int y, bool multitouch)
	/* 根据设备树配置初始化触摸屏特性，根据input对象absbit的设置完成对absinfo的配置
	 * input ：MT 设备对应的 input_dev
	 * multitouch ：是否是多点触摸，true表示多点触摸
	 * prop ：返回触摸屏特性
	 **/
	void touchscreen_parse_properties(struct input_dev *input, bool multitouch, 
									struct touchscreen_properties *prop)
3、上报触摸事件
	Type A 上报顺序：
		1） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第一个触摸点的 X 坐标数据，input_report_abs
		2） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第一个触摸点的 Y 坐标数据，input_report_abs
		3） SYN_MT_REPORT		上报 SYN_MT_REPORT 事件，input_mt_sync
		4） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第二个触摸点的 X 坐标数据
		5） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第二个触摸点的 Y 坐标数据
		6） SYN_MT_REPORT		上报 SYN_MT_REPORT 事件
		......					继续上报剩余的坐标
		7） SYN_REPORT			上报 SYN_REPORT 事件，input_sync
	Type B 上报顺序：
		1） ABS_MT_SLOT			上报第一个触摸点的 ABS_MT_SLOT 事件，input_mt_slot
		2） ABS_MT_TRACKING_ID	通过 ABS_MT_TRACKING_ID 上报第一个触摸点的 ID，input_mt_report_slot_state
		3） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第一个触摸点的 X 坐标数据，input_report_abs
		4） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第一个触摸点的 Y 坐标数据，input_report_abs
		5） ABS_MT_SLOT			上报第二个触摸点的 ABS_MT_SLOT 事件
		6） ABS_MT_TRACKING_ID	通过 ABS_MT_TRACKING_ID 上报第二个触摸点的 ID
		7） ABS_MT_POSITION_X	通过 ABS_MT_POSITION_X 上报第二个触摸点的 X 坐标数据
		8） ABS_MT_POSITION_Y	通过 ABS_MT_POSITION_Y 上报第二个触摸点的 Y 坐标数据
		......
		9） SYN_REPORT			上报 SYN_REPORT 事件，input_sync
